#include <iostream>
#include <vector>
using namespace std;
// 如果到第i个台阶，我们可以从第i-1个台阶跳一步上来，也可以从第i-2个台阶跳两步上来。
// 哪个花费少我们就选择从哪个跳上来。我们定义dp[i]表示到第i个台阶需要的最小花费，那么我们可以得出递推公式

// dp[i] = Math.min(dp[i - 2] + cost[i - 2], dp[i - 1] + cost[i - 1]);


// 其中

// dp[i - 2] + cost[i - 2]表示从第i-2个台阶跳到第i个台阶的最小花费
// dp[i - 1] + cost[i - 1]表示从第i-1个台阶跳到第i个台阶的最小花费

有了递推公式，我们再来看下代码
int main() {
    int n = 0;
    cin >> n;
    int cost[1000];
    for (int i = 0; i < n; i++)
    {
        cin >> cost[i];
    }
    vector<int> arr(n, 0);
    int dp[1000];
    dp[0] = 0, dp[1] = 0;
    for (int i = 2; i < n; i++)
    {
        dp[i] = min(dp[i - 2] + cost[i - 2], dp[i - 1] + cost[i - 1]);
    }
    cout << min(dp[n - 2] + cost[n - 2], dp[n - 1] + cost[n - 1]);
    return 0;
}